package com.grm.workqueues.fair.distribution;

import com.grm.util.RabbitMqUtils;
import com.rabbitmq.client.*;

import java.io.IOException;

public class Consumer2 {
	public static void main(String[] args) {
		getMessage();
	}

	public static void getMessage() {
		try {
			//建立连接
			Connection connection = RabbitMqUtils.getConnection();
			
			//建立通道
			Channel channel = connection.createChannel();

			//每次只能消费一个消息
			channel.basicQos(1);
			
			/*
			 * desc: 绑定消息队列
			 * 
			 * queue 需要在哪个消息队列中发送消息
			 * durable 是否需要持久化
			 * exclusive 是否独占
			 * autoDelete 是否自动删除
			 * arguments 额外参数
			 */
			channel.queueDeclare("work", true, false, false, null);
			
			/*
	         * desc: 消费消息
	         * queue 要消费的消息队列名称
	         * autoAck 是否开启消息确认机制
	         * callback 消费时的回调函数
	         */
	        channel.basicConsume("",false,new DefaultConsumer(channel){
	            @Override
	            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
	                System.out.println("消费者2=" + new String(body));

					/*
					 * desc: 手动确认
					 * deliveryTag 队列中的哪个消息
					 * multiple 是否开启多个消息同时确认
					 */
					channel.basicAck(envelope.getDeliveryTag(),false);
	            }
	        });
	        
	        //不关闭连接跟通道
	        
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
